const router = require('koa-router')();
const {getList, getDetail, newBlog, updateBlog, deleteBlog} = require('../controller/blog');
const {SuccessModel, ErrorModel} = require('../model/resModel');
const loginCheck = require('../middleware/loginCheck');

router.prefix('/api/blog');

router.get('/list', async (ctx, next) => {
    let author = ctx.query.author || '';
    const keyword = ctx.query.keyword || '';
    if (ctx.query.isadmin) {
        console.log('is admin');
        /*管理员界面*/
        if (ctx.session.username == null) {
            console.error('The administrator has not login');
            ctx.body = new ErrorModel('未登录');
            return;
        }
        /*强制查询自己的博客*/
        author = ctx.session.username;
    }
    const listData = await getList(author, keyword);
    ctx.body = new SuccessModel(listData);
});

router.get('/detail', async (ctx, next) => {
    const data = await getDetail(ctx.query.id);
    ctx.body = new SuccessModel(data);
});

router.post('/new', loginCheck, async (ctx, next) => {
    const body = ctx.request.body;
    body.author = ctx.session.username;
    const data = await newBlog(body);
    ctx.body = new SuccessModel(data);
});

router.post('/update', loginCheck, async (ctx, next) => {
    const value = await updateBlog(ctx.query.id, ctx.request.body);
    if (value) {
        ctx.body = new SuccessModel();
    } else {
        ctx.body = new ErrorModel('更新博客失败');
    }
});

router.post('/delete', loginCheck, async (ctx, next) => {
    const author = ctx.session.username;
    const value = await deleteBlog(ctx.query.id, author);
    if (value) {
        ctx.body = new SuccessModel();
    } else {
        ctx.body = new ErrorModel('删除博客失败');
    }
});

module.exports = router;